// pages/goods/list/index.js
//引入得到商品列表的api
import {reqGoodsList} from '../../../../../api/goods'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    goodsList: [], // 商品列表数据
    total:0,//商品总条数
    isFinish: false, // 判断数据是否加载完毕
    isLoading:false,//节流阀参数
    //定义需要发送请求的商品列表参数
    requsetData:{
      page:1,//页码
      limit:10, //每页展示条数
      category1Id:'',//一级分类id
      category2Id:''//二级分类id
    }

  },


  //获取商品列表数据
  async getGoodsList(data){

    //在发送请求之前将isLoading设为true,表示正在发送请求
    this.data.isLoading = true

   const res = await reqGoodsList(data)
    //发送请求之后设为false
    this.data.isLoading = false
  //  console.log(res.data.records);
   //渲染数据,当页面到底时合并数据
  //  console.log(res.data.records);
   this.setData({
    goodsList:[...this.data.goodsList,...res.data.records],
    total:res.data.total
   })
  //  console.log(res.data.records,'record');
  // console.log(this.data.goodsList);
  },

  //监听页面下拉刷新
  onPullDownRefresh(){
      //当页面下拉刷新触发时，重置请求参数重新请求
      this.setData({
        goodsList:[],
        total:0,
        isFinish:false,
        requsetData:{ ...this.data.requsetData,page:1 }
      })
      this.getGoodsList(this.data.requsetData)
      //完成以后关闭下拉
      wx.stopPullDownRefresh()
  },

  // 监听页面触底
  onReachBottom(){
    //判断节流阀的值，如果为true表示正在发送请求，就不能继续触发后续的逻辑
    if (this.data.isLoading) return

    //判断商品列表是否与总条数相等，如果相等就不再请求api
    const {goodsList,isFinish,total} = this.data
    if (goodsList.length ===total) {
      this.setData({
        isFinish:true
      })
      return
    }
    //当页面下拉到底时，page+1，同时调用获取商品列表的函数
     const {page} = this.data.requsetData
     console.log(page);
     //合并参数page+1
     this.setData({
      requsetData:{...this.data.requsetData,page:page+1},
     })
     //调用方法
     this.getGoodsList(this.data.requsetData)
  },

  // 定义接收过来的参数
  onLoad(options){
    // console.log(options);
    const res =  Object.assign(this.data.requsetData,options)
    //调用获得商品列表的方法
    this.getGoodsList(res)


  }

})
